#ifndef ETH_RX_H_
#define ETH_RX_H_

		//!	@brief				Связывает объект с аппаратным модулем.
		/*!	@param	base_addr	Адрес аппаратного модуля
		 */
		alt_u8 eth_rx_init(alt_u32 addr);

		//!	@brief 				Метод позволяет сбросить аппаратный модуль
		/*!	@param				Нет
		 *  @return	0
		 */
		alt_u8 eth_rx_reset();

		//! @brief 				Метод позволяет получить размер пакета без удаления его из буфера.
		/*!	@param				Нет
		 *  @return	size		Размер пакета в байтах. Если буфер пуст, возвращает 0.
		 */
		alt_u32 eth_rx_get_size();

		//! @brief 				Метод позволяет получить размер пакета. Затем удаляет его из буфера.
		/*!	@param 				Нет
		 *  @return	size		Размер пакета в байтах. Если буфер пуст, возвращает 0.
		 */
		alt_u32 eth_rx_get_size_next();

		//! @brief 				Метод позволяет получить адрес начала пакета.
		/*!	@param 				Нет
		 *  @return	addr		Адрес начала пакета в байтах. Если буфер пуст, возвращает 0xFFFFFFFF.
		 */
		alt_u32 eth_rx_get_addr();


		//! @brief 				Метод позволяет получить адрес начала пакета. Затем удаляет его из буфера.
		/*!	@param 				Нет
		 *  @return	addr		Адрес начала пакета в байтах. Если буфер пуст, возвращает 0xFFFFFFFF.
		 */
		alt_u32 eth_rx_get_addr_next();

		typedef union	eth_rx_cmd_reg_u
		{
			struct
			{
				alt_u32		cmd		:4;			//!< Команда
				alt_u32		res		:28;		//!< Резерв
			};
			alt_u32			data;
		} eth_rx_cmd_reg_t;


		//! Регистр статуса модуля
		typedef union	eth_rx_status_reg_u
		{
			struct
			{
				alt_u32		empty	:1;			//!< Буфер пуст
				alt_u32		full	:1;			//!< Буфер заполнен
				alt_u32		res		:30;		//!< Резерв
			};
			alt_u32			data;
		}eth_rx_status_reg_t;


#endif /* ETH_RX_H_ */
